<template>
  <div>
    <p>请选择你要购买的书籍</p>
    <ul>
      <!-- v-for遍历出来数据 -->
      <li v-for="(item, index) in arr" :key="index">
        {{ item.name }}
        <!-- 根据索引值设置buy函数 -->
        <button @click="buy(index)">买书</button>
      </li>
    </ul>
    <table border="1" width="500" cellspacing="0">
      <thead>
        <tr>
          <th>序号</th>
          <th>书名</th>
          <th>单价</th>
          <th>数量</th>
          <th>合计</th>
        </tr>
      </thead>
      <!-- v-for遍历对象渲染表格 -->
      <tr v-for="(item, index) in arr" :key="index">
        <!-- 因为没有编号，可以用遍历的索引值+1 -->
        <td>{{ index + 1 }}</td>
        <td>{{ item.name }}</td>
        <td>{{ item.price }}</td>
        <td>{{ item.count }}</td>
        <td>{{ item.price * item.count }}</td>
      </tr>
    </table>
    <!-- 计算总和或者平均值的时候我们想到计算属性，计算属性用的时候后面不加（） -->
    <p>总价格为:{{ sumPrice }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      arr: [
        {
          name: "水浒传",
          price: 107,
          count: 0,
        },
        {
          name: "西游记",
          price: 192,
          count: 0,
        },
        {
          name: "三国演义",
          price: 219,
          count: 0,
        },
        {
          name: "红楼梦",
          price: 178,
          count: 0,
        },
      ],
    };
  },
  methods: {
    // 次数加1每次
    buy(index) {
      this.arr[index]["count"]++;
    },
  },
  // 添加计算属性
  computed: {
    sumPrice() {
      // reduce（（前面的累计值，最后一个参数），起始值）
      // 注意： computed的结果是return出来的，不要忘写return
      return this.arr.reduce((sum, obj) => {
        return sum + obj["price"] * obj["count"];
      }, 0);
    },
  },
};
</script>
